package com.chen.demo;

public class Test3 {
    public static void main(String[] args) {
     // 目标：开发验证。
     // 1.调用一个方法，返回执行位数的验证码，每位只能是数字或者发大写字母或者小写字母。
        System.out.println(getCode(4));
        System.out.println(getCode(6));

    }

    public static String getCode(int n){
        // 2.定义一个字符串变量，用于记录生成的验证码

        String code = "";
        // 3.循环n次，每次生成一个验证码
        for (int i = 0; i < n; i++) {

            // i = 0 1 2 3
            // 4.为当前位置随机生成一个数字或着大写字母或着小写字母， 数字0 / 大写1 / 小写2
            // 随机一个 0 或者 1 或者 2 表示当前位置随机数的字符类型
            int type = (int)(Math.random() * 3); // [0,1) * 3 ==> 0 1 2
            // 5.使用switch语句，判断当前位置随机数的字符类型。
            switch (type) {
                case 0:
                    // 6.如果当前位置是数字，则随机生成一个数字0-9，然后拼接
                    int num = (int)(Math.random() * 10);
                    code += num;
                    break;

                case 1:
                    // 7.如果当前位置是大写字母，则随机生成一个大写字母A-Z，然后拼接
                    int upper = (int)(Math.random() * 26);
                    char upperChar = (char)(upper + 65); // 得到大写字母的随机编号，转成大写字母
                    code += upperChar;
                    break;

                case 2:
                    // 8.如果当前位置是小写字母，则随机生成一个小写字母a-z，然后拼接
                    int lower = (int)(Math.random() * 26);
                    char lowerChar = (char)(lower + 97);
                    code += (char)lowerChar;
                    break;

            }
        }
        return code;
    }
}
